The present invention relates to computing, and in particular, to systems and methods for performing complex operations in a database using a semantic layer.
Unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
FIG. 1 shows a typical application and database. Application 101 may store data in and retrieve data from database 102. Typically, application 101 generates structured query language (SQL) statements and sends the SQL statements to database 102. The SQL statements may be received in a SQL parser 103 to examine the structure of the SQL, optimized by optimizer 104, and executed on the database using a relational engine 105 to store or retrieve data 106. The SQL statements received by database 102 may specify some limited processing of the data when the SQL statements are executed.
However, the ability of SQL to implement complex operations is very limited. Typically, application programmers design applications so that data is retrieved into the application for complex application processing. This is sometimes referred to as bringing the data to the code (i.e., the application code). However, transporting large amounts of data from the database to the application can be processor intensive and inefficient. It would be generally desirable to push more application processing down to the database.
The present disclosure addresses these and other issues by performing complex operations in a database using a semantic layer.